import axios from "axios";
import serverConfig from "./config";
import qs from "qs";
import router from "@/router";
import {Message} from "element-ui";
import store from "@/store";

// 创建 axios 请求实例
const serviceAxios = axios.create({
    baseURL: serverConfig.baseURL, // 基础请求地址
    timeout: 10000, // 请求超时设置
    withCredentials: false, // 跨域请求是否需要携带 cookie
});


// 创建请求拦截
serviceAxios.interceptors.request.use(
    (config) => {
        // 如果开启 token 认证
        if (serverConfig.useTokenAuthorization) {
            config.headers["token"] = localStorage.getItem("Token"); // 请求头携带 token
        }
        if(store.state.language == 'en'){
            if (config.method === 'get'){
                if (config.params){
                    config.params.lg = 'en'
                } else {
                    config["params"] = {
                        lg:'en'
                    }
                }
            }
        } else{
            if (config.method === 'get'){
                if (config.params){
                    config.params.lg = 'zh-cn'
                } else {
                    config["params"] = {
                        lg:'zh-cn'
                    }
                }
            }
        }
        // 设置请求头
        if (!config.headers["content-type"]) { // 如果没有设置请求头
            if (config.method === 'post') {
                config.headers["content-type"] = "application/x-www-form-urlencoded"; // post 请求
                config.data = qs.stringify(config.data); // 序列化,比如表单数据
            } else {
                config.headers["content-type"] = "application/json"; // 默认类型
            }
        }
        return config;

    },
    (error) => {
        Promise.reject(error);
    }
);


// 创建响应拦截
serviceAxios.interceptors.response.use(
    (res) => {
        let data = res.data;
        if (data.code != 1 && data.msg != ""){
            Message.warning(data.msg)
            if (data.data == '/login') {
                // Message.warning("请先登录")
                router.push("/login")
            }

            return Promise.reject(data);
        }
        // 处理自己的业务逻辑，比如判断 token 是否过期等等
        // 代码块
        // return data;
        return Promise.resolve(data)
    },
    (error) => {

        return Promise.reject(error);
    }
);
export default serviceAxios;